package com.nur.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.nur.dal.Conexion;
import com.nur.dto.Backup;

public class BackupDao extends Dao<Backup>{

	public BackupDao(Context context) {
		super(context);
	}

	@Override
	public void insertar() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a insertar no puede ser nulo");
		
		ContentValues params = new ContentValues();
		params.put("idusuario", this.dto.getIdUsuario());
		params.put("fecha_creado", this.dto.getFechaCreacion());

		long id = db.insert("backup", null, params);
		this.dto.setIdBackup((int)id);
	}

	@Override
	public void update() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a actualizar no puede ser nulo");
		
		ContentValues params = new ContentValues();
		params.put("idusuario", super.dto.getIdUsuario());
		params.put("fecha_creado", super.dto.getFechaCreacion());

		db.update("backup", params,"idbackup=?", new String[]{ String.valueOf(this.dto.getIdBackup()) });
	}

	@Override
	public void delete() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a eliminar no puede ser nulo");
		
		db.delete("backup", "idbackup=?", new String[]{ String.valueOf(super.dto.getIdBackup()) });
	}

	@Override
	public Backup select(int id) {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getReadableDatabase();
		
		Cursor cursor = db.rawQuery("SELECT idbackup, "
					+ "idusuario, "
					+ "fecha_creado FROM backup WHERE idbackup = ?", 
				new String[]{ String.valueOf(id) });
		
		if(!cursor.moveToFirst())
			return null;
		
		int idBackup = cursor.getInt(0);
		int idUsuario = cursor.getInt(1);
		String fechaCreacion = cursor.getString(2);
		
		Backup objBackup = new Backup(idBackup, idUsuario, fechaCreacion);
		
		return objBackup;
	}

}
